<?php
/**
 *  * 系统-受国家计算机软件著作权保护 - !
 * =========================================================
 * Copy right 2018-2025 成都海之心科技有限公司, 保留所有权利。
 * ----------------------------------------------
 * 官方网址: http://www.ohyu.cn
 * 这不是一个自由软件！在未得到官方有效许可的前提下禁止对程序代码进行修改和使用。
 * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
 * =========================================================
 * User: ohyueo
 * Date: 2023/9/21
 * Time: 18:09
 */

namespace app\common;
use think\facade\Db;
use think\facade\Cache;
use think\facade\Log;

class XieCheng
{
    private $key = '6b4d63211b4ba869';
    private $iv = 'dbbf079b95004f65';
    public function aes128_cbc_encrypt($data) {
        $key = $this->key;
        $iv = $this->iv;
        if(16 !== strlen($key)) $key = hash('MD5', $key, true);
        if(16 !== strlen($iv)) $iv = hash('MD5', $iv, true);
        $padding = 16 - (strlen($data) % 16);
        $data .= str_repeat(chr($padding), $padding);
        return $this->encode_bytes(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv));
    }
    public function aes128_cbc_decrypt($data) {
        $key = $this->key;
        $iv = $this->iv;
        if(16 !== strlen($key)) $key = hash('MD5', $key, true);
        if(16 !== strlen($iv)) $iv = hash('MD5', $iv, true);
        $data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $this->decode_bytes($data), MCRYPT_MODE_CBC, $iv);
        $padding = ord($data[strlen($data) - 1]);
        return substr($data, 0, -$padding);
    }
    public function decode_bytes($text){
        $bytes=array();
        for($i=0;$i<strlen($text);$i+=2){
            $char=$text[$i];
            $bytes[$i/2]=chr((ord($char)-ord('a'))<<4);
            $char=$text[$i+1];
            $bytes[$i/2]=chr(ord($bytes[$i/2])+(ord($char)-ord('a')));
        }
        return join('',$bytes);
    }
    public function encode_bytes($text){
        $bytes=array();
        for($i=0;$i<strlen($text);$i++){
            $bytes[]=chr(((ord($text[$i])>>4)&15)+ord('a'));
            $bytes[]=chr((ord($text[$i]) & 15)+ord('a'));
        }
        return join('',$bytes);
    }
    
}